Skip to content

feat(release): add shared release tooling - #415

Open
wpbonelli wants to merge 4 commits into
MODFLOW-ORG:developfrom
wpbonelli:feat/release-actions
Open

wpbonelli wants to merge 4 commits into
MODFLOW-ORG:developfrom
wpbonelli:feat/release-actions

Conversation

@wpbonelli

@wpbonelli wpbonelli commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

Shared CI/release tooling for program repos, generalized from mfusg's workflows

  • actions
    • setup: Intel compilers via setup-fortran, gfortran from the repo's pixi environment (conda-forge), static linking via LDFLAGS
    • check-linkage: fail on dynamically linked compiler runtimes on every platform/compiler toolchain, require arm64 on macOS
    • package: zip bin/ as <ostag>.zip and the source as <name>_source.zip, identically on every platform
    • release-start
    • release-finish: publish with optional extra-assets
    • version
    • changelog
  • Python modules defining shared release logic
    • version
    • changelog
    • package
    • workflow
  • example build and release workflows in docs/examples/ for program repos to copy
  • shared git-cliff template cliff.toml, used by every repo, git-cliff pinned and run with pipx/uvx
  • single (main) and dual (develop -> main) branching models
  • dependabot, monthly and grouped

The idea is for each program repo to own its workflows, since they may vary too much to share, but define shared scripts/actions/conventions here. Moving some logic into Python should help if God forbid we are ever forced off GitHub to another git forge/CICD platform.

Test release stuff against a local bare git remote and a fake gh, including reruns.

Composite actions, scripts and example workflows for building, packaging and releasing MODFLOW program repositories, generalized from mfusg's workflows. Moved from MODFLOW-ORG/release-tooling, so the actions are versioned with modflow-devtools.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@wpbonelli wpbonelli added this to the 1.10.0 milestone Nov 11, 2026
@wpbonelli wpbonelli added the enhancement New feature or request label Nov 11, 2026
@wpbonelli wpbonelli changed the title feat(release): add release actions for program repositories feat(release): add shared release tooling Nov 11, 2026
wpbonelli and others added 3 commits November 11, 2026 06:12
actionlint 1.7.7 rejects YAML aliases for on.<event>.paths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Move the release-start/finish logic into modflow_devtools/release/workflow.py
so it can be tested, and make each stage safe to rerun. Fail before the build
when a release has no changelog section. Support extra release assets, drop
Intel macOS, take gfortran from pixi and always link compiler runtimes
statically, enforce static linkage on every platform, package the same way
everywhere, use only the shared git-cliff template at a pinned version, scope
the meson version to project(), and update version files atomically.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
On Windows, --prepend repeated the changelog header. Insert the new section
above the earlier ones in Python, and write the file with LF line endings.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant